By way of introduction, one possible technique to protect against reverse engineering of executable software is to present a “moving target” by creating multiple instances of a compiled program that are functionally equivalent such that there are code variations between the different compiled instances. In this way an exploit crafted to succeed against one instance of the compiled software will not necessarily work against a second instance. This technique is known as software diversity.
Another technique that protects against static analysis of programs is to encrypt the whole program and decrypt the executable code at run-time.
The following references are also believed to represent the state of the art:
US Published Patent Application 2004/0268322 of Chow, et al.;
US Published Patent Application 2008/0320452 of Thomson;
US Published Patent Application 2010/0082997 of Elbaum, et al.;
US Published Patent Application 2010/0153717 of Sandler, et al.;
U.S. Pat. No. 7,464,269 to Johnson, et al.; and
U.S. Pat. No. 7,512,986 to Shen-Orr, et al.